using System;
using System.Collections.Generic;
using System.Text;

using System.Data;
using System.Data.SqlClient;
using System.Configuration;

using HHo_Model;

namespace HHo_Negocio
{
    public class GestorTipoTrabajo
    {
        private List<E_TipoTrabajo> lstTiposTrabajo;
        private E_TipoTrabajo oTipoTrabajo;
        private SqlDataReader oRdr;


        public List<E_TipoTrabajo> ConsultarTipoTrabajo(int Id)
        {
            SqlParameter oPrm = new SqlParameter("@ID", SqlDbType.Int);
            oPrm.Direction = ParameterDirection.Input;
            oPrm.Value = Id;

            oRdr = SQLHelper.ExecuteReader(SQLHelper.ObtieneCadenaConexion(), CommandType.StoredProcedure, "HHSS_CONSULTATIPOTRAB", oPrm);
            return PoblarTipoTrabajo(oRdr);
        }

        public List<E_TipoTrabajo> ConsultarTipoTrabajo(int Id, char Todos)
        {
            SqlParameter oPrm = new SqlParameter("@ID", SqlDbType.Int);
            oPrm.Direction = ParameterDirection.Input;
            oPrm.Value = Id;

            SqlParameter oPrm2 = new SqlParameter("@SWTODOS", SqlDbType.Char);
            oPrm2.Size = 1;
            oPrm2.Direction = ParameterDirection.Input;
            oPrm2.Value = Todos;

            oRdr = SQLHelper.ExecuteReader(SQLHelper.ObtieneCadenaConexion(), CommandType.StoredProcedure, "HHSS_CONSULTATIPOTRAB", oPrm, oPrm2);
            return PoblarTipoTrabajo(oRdr);
        }

        private List<E_TipoTrabajo> PoblarTipoTrabajo(SqlDataReader oRdr)
        {
            lstTiposTrabajo = new List<E_TipoTrabajo>();
            if (oRdr != null)
            {
                while (oRdr.Read())
                {
                    oTipoTrabajo = new E_TipoTrabajo();

                    if (oRdr.GetValue(0) != DBNull.Value)
                        oTipoTrabajo.Id = oRdr.GetInt32(0);

                    if (oRdr.GetValue(1) != DBNull.Value)
                        oTipoTrabajo.Descripcion = oRdr.GetString(1);

                    if (oRdr.GetValue(2) != DBNull.Value)
                        oTipoTrabajo.HorasEstimadas = oRdr.GetDecimal(2);

                    if (oRdr.GetValue(3) != DBNull.Value)
                        oTipoTrabajo.Estado = oRdr.GetString(3);

                    if (oRdr.GetValue(4) != DBNull.Value)
                        oTipoTrabajo.OrigenId = oRdr.GetInt32(4);

                    if (oRdr.GetValue(5) != DBNull.Value)
                        oTipoTrabajo.OrigenDesc = oRdr.GetString(5);

                    lstTiposTrabajo.Add(oTipoTrabajo);
                    oTipoTrabajo = null;
                }
            }
            return lstTiposTrabajo;
        }

        public List<E_TipoTrabajo> Man_ConsultaTipoTrabajo(E_TipoTrabajo eTipTra)
        {
            SqlParameter p1, p2, p3, p4, p5;
            SqlDataReader oRdr;
            p1 = new SqlParameter("@TIPTRA_ID", SqlDbType.Int);
            if (eTipTra.Id != 0)
            {
                p1.Value = eTipTra.Id;
            }

            p2 = new SqlParameter("@TIPTRA_ORIID", SqlDbType.Int);
            if (eTipTra.OrigenId != -99999)
            {
                p2.Value = eTipTra.OrigenId;
            }

            p3 = new SqlParameter("@TIPTRA_DESC", SqlDbType.VarChar);
            if (eTipTra.Descripcion != "")
            {
                p3.Value = eTipTra.Descripcion;
            }

            p4 = new SqlParameter("@TIPTRA_HHESTIM", SqlDbType.Decimal);
            if (eTipTra.HorasEstimadas != 0)
            {
                p4.Value = eTipTra.HorasEstimadas;
            }

            p5 = new SqlParameter("@TIPTRA_EST", SqlDbType.Char);
            p5.Size = 2;
            if (eTipTra.Estado != null)
            {
                p5.Value = eTipTra.Estado;
            }

            oRdr = SQLHelper.ExecuteReader(SQLHelper.ObtieneCadenaConexion(), CommandType.StoredProcedure, "HHSS_MAN_TIPOTRAB", p1, p2, p3, p4, p5);
            return PoblarTipoTrabajo(oRdr);
        }

        public bool Man_InsertTipoTrabajo(E_TipoTrabajo eTipTra)
        {
            SqlParameter p1, p2, p3, p4;
            bool returnValue = false;

            p1 = new SqlParameter("@TIPTRA_ORIID", SqlDbType.Int);
            if (eTipTra.OrigenId != 0)
            {
                p1.Value = eTipTra.OrigenId;
            }

            p2 = new SqlParameter("@TIPTRA_DESC", SqlDbType.VarChar);
            if (eTipTra.Descripcion != "")
            {
                p2.Value = eTipTra.Descripcion;
            }

            p3 = new SqlParameter("@TIPTRA_HHESTIM", SqlDbType.Decimal);
            if (eTipTra.HorasEstimadas != 0)
            {
                p3.Value = eTipTra.HorasEstimadas;
            }

            p4 = new SqlParameter("@TIPTRA_EST", SqlDbType.Char);
            if (eTipTra.Estado != "")
            {
                p4.Value = eTipTra.Estado;
            }

            try
            {
                if (SQLHelper.ExecuteNonQuery(SQLHelper.ObtieneCadenaConexion(), CommandType.StoredProcedure, "HHSI_MAN_TIPOTRAB", p1, p2, p3, p4) > 0)
                    returnValue = true;
            }
            catch (Exception ex)
            {
                throw;
            }

            return returnValue;

        }

        public bool Man_ActualizaTipoTrabajo(E_TipoTrabajo eTipTra)
        {
            SqlParameter p0, p1, p2, p3, p4;            
            bool returnValue = false;

            p0 = new SqlParameter("@TIPTRA_ID", SqlDbType.Int);
            if (eTipTra.Id != 0)
            {
                p0.Value = eTipTra.Id;
            }
            else
            {
                Exception Ex1 = new Exception("ERROR, no se ha seleccionado el Id");
                throw Ex1;
            }

            p1 = new SqlParameter("@TIPTRA_ORIID", SqlDbType.Int);
            if (eTipTra.OrigenId != 0)
            {
                p1.Value = eTipTra.OrigenId;
            }

            p2 = new SqlParameter("@TIPTRA_DESC", SqlDbType.VarChar);
            if (eTipTra.Descripcion != "")
            {
                p2.Value = eTipTra.Descripcion;
            }

            p3 = new SqlParameter("@TIPTRA_HHESTIM", SqlDbType.Decimal);
            if (eTipTra.HorasEstimadas != 0)
            {
                p3.Value = eTipTra.HorasEstimadas;
            }

            p4 = new SqlParameter("@TIPTRA_EST", SqlDbType.Char);
            if (eTipTra.Estado != "")
            {
                p4.Value = eTipTra.Estado;
            }

            try {
                if (SQLHelper.ExecuteNonQuery(SQLHelper.ObtieneCadenaConexion(), CommandType.StoredProcedure, "HHSU_MAN_TIPOTRAB", p0, p1, p2, p3, p4) > 0)
                    returnValue = true;
            }
            catch(Exception ex) {
                throw;
            }

            return returnValue;
        }
    
    }
}
